package com.qixiaobao.direct.invoice.service;

import com.qixiaobao.direct.invoice.domain.dto.DirectInvoiceDTO;
import com.qixiaobao.direct.invoice.domain.vo.DirectInvoiceChargeVO;
import com.qixiaobao.direct.invoice.domain.vo.DirectInvoiceVO;
import com.qixiaobao.direct.invoice.domain.vo.DirectWaitInvoiceVO;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;

/**
 * @Description 直投发票管理  业务层
 * @Author yangxm
 * @Date 2025/7/2 15:40
 */
public interface IDirectInvoiceService {


    /**
     * 查询待开票列表
     * @param directInvoiceDTO
     * @return
     */
    List<DirectWaitInvoiceVO> selectWaitInvoiceList(DirectInvoiceDTO directInvoiceDTO);

    /**
     * 查询待开票 - 开票金额合计
     * @param directInvoiceDTO
     * @return
     */
    BigDecimal selectWaitInvoiceTotal(DirectInvoiceDTO directInvoiceDTO);

    /**
     * 查询开票中、已开票列表
     * @param directInvoiceDTO
     * @return
     */
    List<DirectInvoiceVO> selectInvoiceList(DirectInvoiceDTO directInvoiceDTO);

    /**
     * 查询开票中、已开票 - 开票金额合计
     * @param directInvoiceDTO
     * @return
     */
    BigDecimal selectInvoiceTotal(DirectInvoiceDTO directInvoiceDTO);


    /**
     * @Description 开票中、已开票 导出
     * @Author yangxm
     * @Date 2025/7/3 13:07
     * @param directInvoiceDTO
     * @param response
     */
    void export(DirectInvoiceDTO directInvoiceDTO, HttpServletResponse response);

    /**
     * @Description 开票中 - 修改供应商备注
     * @Author yangxm
     * @Date 2025/7/3 13:07
     * @param directInvoiceDTO
     * @return
     */
    int updateSupplyRemark(DirectInvoiceDTO directInvoiceDTO);

    /**
     * @Description 开票中 - 上传发票文件
     * @Author yangxm
     * @Date 2025/7/3 13:07
     * @param directInvoiceDTO
     * @return
     */
    int uploadInvoiceFile(DirectInvoiceDTO directInvoiceDTO);

    /**
     * @Description 开票中、已开票 - 费用详情
     * @Author yangxm
     * @Date 2025/7/3 13:07
     * @param invoiceId
     * @return
     */
    List<DirectInvoiceChargeVO> selectInvoiceChargeList(Long invoiceId);
}
